<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="secured" uri="http://www.springframework.org/security/tags" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<secured:authorize ifAnyGranted="ROLE_VER_TAREAS">
<head>
	
</head>
<body>
	<h3><spring:message code="etiqueta.gestionTareas" text="Gestión de tareas" /></h3>
	
	<div class="filtro">
		<label class="horizontal"><spring:message code="etiqueta.filtrar" text="Filtrar por" /></label>
		<input class="horizontal" type="text" id="filtrado" autofocus="autofocus" />
		<span></span>
	</div>
	
	<div class="listado horizontal"></div>
	
	<div class="reportes">
		<span><spring:message code="etiqueta.exportar" text="Exportar a" /></span>
		<button onclick="javascript:xls();"><spring:message code="etiqueta.xls" text="XLS" /></button>
		<button onclick="javascript:pdf();"><spring:message code="etiqueta.pdf" text="PDF" /></button>
	</div>
	
	<!-- JAVASCRIPT -->
	<script type="text/javascript">
		var datos = [];
		var tabla;
		var cabezales = [
   			'<spring:message code="etiqueta.descripcion" text="Descripción" />',
   			'<spring:message code="etiqueta.estado" text="Estado" />',
   			'<spring:message code="etiqueta.ejecuciones" text="Ejecuciones" />',
   			'<spring:message code="etiqueta.exitosas" text="Exitosas" />',
   			'<spring:message code="etiqueta.fallidas" text="Fallidas" />',
   			'<spring:message code="etiqueta.horaComienzo" text="Hora de inicio" />',
   			'<spring:message code="etiqueta.horaFin" text="Hora de fin" />',
   			'<spring:message code="etiqueta.horaUltimaExitosa" text="Última exitosa" />',
   			'<spring:message code="etiqueta.horaUltimaFallida" text="Última fallida" />',
   			''
   		];
	
		jQuery(document).ready(function(){	
   			actualizar();

   			jQuery('#filtrado').on('keyup', function (event) {
   			  	var value = ('' + this.value).toLowerCase(), row, col;
   			 	var filtro = [], registros;
   			 	if (value) {
   			    	for (row = 0; row < datos.length; row++) {
   	   			    	var fila = datos[row];
   	   			  		var incluido = false;
   			      		for (col = 0; col < fila.length; col++) {
   			      			var texto = '' + datos[row][col];
   			      			if ((texto).toLowerCase().indexOf(value) > -1) {
   	   			      			if(incluido == false) {
   	   			      				filtro.push(fila);
   	   			      				incluido = true;
   	   	   			      		}
   			      			}
	  			      	}
   			    	}
   			    	registros = filtro.length;
   			    	tabla.handsontable('loadData', filtro);
   			  	} else {
   			  		registros = datos.length;
   			  		tabla.handsontable('loadData', datos);
   	   			}
   			 	mensajeListado(registros);
   			});

   			jQuery('button').button();
   		});

   		function actualizar() {
   			jQuery.ajax(
			    {
			        url: "tareas.json",
			        cache: false,
			        contentType: 'application/json; charset=UTF-8',
			        data:{
				        accion: 'LISTAR'
				    },
			        dataType: 'json'
			    }
			).done(
				function(tareas) {
					datos = [];
	   				
		   			//Datos
		   			if(tareas.length > 0){
	       				jQuery.each(tareas, function(index, value){
	       					var tarea = jQuery(value)[0];
	       					var id = tarea.id;
							var descripcion = jQuery.trim(tarea.descripcion);
							var estado = '';
							switch(tarea.estado) {
							case 'ACTIVA':
								estado = '<spring:message code="etiqueta.estadoTarea.ACTIVA" text="Activa" />';
								break;
							case 'CANCELADA':
								estado = '<spring:message code="etiqueta.estadoTarea.CANCELADA" text="Cancelada" />';
								break;
							case 'INACTIVA':
								estado = '<spring:message code="etiqueta.estadoTarea.INACTIVA" text="Inactiva" />';
								break;
							case 'TERMINADA':
								estado = '<spring:message code="etiqueta.estadoTarea.TERMINADA" text="Terminada" />';
								break;
							}
							
		       				datos.push([
		    		       		tooltip(descripcion, 0, 25),
		    		       		estado,
								jQuery.trim(tarea.ejecuciones),
								jQuery.trim(tarea.exitosas),
								jQuery.trim(tarea.fallidas),
								jQuery.trim(tarea.horaComienzo),
								jQuery.trim(tarea.horaFin),
								jQuery.trim(tarea.horaUltimaExitosa),
								jQuery.trim(tarea.horaUltimaFallida),
								links(id)
		    		       	]);
	       				});
		   			}

		   			mensajeListado(datos.length);

		   			tabla = $(".listado").handsontable(
	   	   		   		{
	   	   		   			colHeaders : cabezales,
	   	   		   			colWidths : [160, 80, 70, 70, 70, 150, 150, 150, 150, 70],
			   	   		   	columns: [
			   	   		   	    {data: 0, type: {renderer: textoHtml}},
			   	   		   	    {data: 1},
			   	   		   	    {data: 2},
			   	   		   	    {data: 3},
			   	   		   	    {data: 4},
			   	   		   	    {data: 5},
					   	   		{data: 6},
				   	   		   	{data: 7},
				   	   		   	{data: 8},
			   	   		   	    {data: 9, type: {renderer: textoHtml}}
			   	   		   	  ],
	   	   		   			columnSorting : true,
	   	   		   			contextMenu : false,
	   	   		   			currentRowClassName : 'seleccionado',
	   	   	   		   		data: datos,
	   	   	   		   		maxCols : 10,
	   	   	   				minCols : 10,
	   	   	   		  		stretchH: 'last'
	   	   	   		   	}
	   	   	   		);
			    }
			);
   	   	}

   	   	function links(id) {
   	   	   	var texto = '<span class="link" style="width: 100%;">';
   	   		<secured:authorize ifAnyGranted="ROLE_EJECUTAR_TAREA">
   	   		texto += '<a class="link-accion" href="javascript:ejecutar(' + id + ');"><spring:message code="etiqueta.ejecutar" text="Ejecutar" /></a>';
   	   		</secured:authorize>
   	  		texto += '</span>';

   	  		return texto;
   		}

   	 	<secured:authorize ifAnyGranted="ROLE_EJECUTAR_TAREA">
   	 	function ejecutar(id) {
   	 		jQuery.ajax(
			    {
			        url: 'tareas.json?accion=EJECUTAR&&id=' + id,
			        cache: false,
			        dataType: 'json'
			    }
			).done(
				function(json){
					actualizar();

					indicador('TAREAS');
				}
			);
   	   	}
   	 	</secured:authorize>

   	 	function xls() {
	   		var headers = jQuery.toJSON(tabla.handsontable('getColHeader')).toString();
			var datos = jQuery.toJSON(tabla.handsontable('getData')).toString();
	   		 
			reporte('XLS', 'TAREAS', headers, datos);
	   	}

	   	function pdf() {
	   	   	var headers = jQuery.toJSON(tabla.handsontable('getColHeader')).toString();
			var datos = jQuery.toJSON(tabla.handsontable('getData')).toString();
		   		 
			reporte('PDF', 'TAREAS', headers, datos);
	   	}
    </script>
</body>
</secured:authorize>